package com.winhxd.b2c.product.dao;

import com.winhxd.b2c.common.domain.product.model.ProductSpuCategory;
import com.winhxd.b2c.common.domain.product.vo.ProductCategoryGroupVO;
import com.winhxd.b2c.common.domain.product.vo.ProductCategoryTwoWithSpuNumVO;
import org.apache.ibatis.annotations.MapKey;

import java.util.List;
import java.util.Map;

/**
 * @author luosixiang
 */
public interface ProductSpuCategoryMapper {
    /**
       *  根据主键删除
       * @author luosixiang
       * @date 15:24 2019/1/18
       * @param id
       * @return int
       **/

    int deleteByPrimaryKey(Long id);

    /**
       *  根据spuid删除
       * @author luosixiang
       * @date 15:24 2019/1/18
       * @param id
       * @return int
       **/

    int deleteBySpuId(Long id);

    /**
       *  新增
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param record
       * @return int
       **/

    int insert(ProductSpuCategory record);

    /**
       *  新增
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param record
       * @return int
       **/

    int insertSelective(ProductSpuCategory record);

    /**
       *  根据主键查询
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param id
       * @return com.winhxd.b2c.common.domain.product.model.ProductSpuCategory
       **/

    ProductSpuCategory selectByPrimaryKey(Long id);

    /**
       *  条件查询
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param productSpuCategory
       * @return java.util.List<com.winhxd.b2c.common.domain.product.model.ProductSpuCategory>
       **/

    List<ProductSpuCategory> selectByModel(ProductSpuCategory productSpuCategory);

    /**
       *  根据spuid查询
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param spuId
       * @return java.util.List<com.winhxd.b2c.common.domain.product.vo.ProductCategoryGroupVO>
       **/

    List<ProductCategoryGroupVO> selectGroupBySpuId(Long spuId);

    /**
       *  根据主键修改
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param record
       * @return int
       **/

    int updateByPrimaryKeySelective(ProductSpuCategory record);

    /**
       *  根据主键修改
       * @author luosixiang
       * @date 15:25 2019/1/18
       * @param record
       * @return int
       **/

    int updateByPrimaryKey(ProductSpuCategory record);

    /**
     * 查询商品挂靠的二级分类下有多少spu
     * 手机端首页分类用
     * @return
     */
    List<ProductCategoryTwoWithSpuNumVO> selectCategoryTwoSpuNum();

}